modernize: net8.0, net9.0, net10.0, code optimizations and cleanup.#79
Merged
Conversation
Centralize modern TFMs in Directory.Build.props and update all projects to support net8.0, net9.0, and net10.0. Upgrade BenchmarkDotNet and test dependencies (FluentAssertions, MSTest, NUnit, Microsoft.NET.Test.Sdk). Refactor tests to use FluentAssertions' Should() syntax. Update GitVersion tool and configuration for GitFlow. Add changelog and documentation comments for these changes.
Added nuspec groups for .NET 8.0, 9.0, and 10.0. Increased minimum NEventStore dependency to 10.2.0 (breaking change). Updated changelog. Marked test project with IsTestProject, switched reference group to net472, updated FluentAssertions to 8.9.0, and removed legacy Service entry. Bumped Microsoft.SourceLink.GitHub to 10.0.203. Updated NEventStore submodule.
- Add artifacts/ and .tokensave to .gitignore - Bump NEventStore submodule to latest commit - Use mongo:8 image in CI docker-compose files - Upgrade test dependencies in MongoDB.Core.Tests.csproj - Update SourceLink.GitHub in MongoDB.Core.csproj
…nctionality - Introduced `benchmark-snapshot.ps1` script for creating performance snapshots. - Added various benchmark classes to measure performance of checkpoint generators, duplicate conflicts, global checkpoint reads, and recycle bin reads. - Implemented async benchmarks for reading from and writing to the event store. - Enhanced `EventStoreHelpers` to ensure BSON serializers are registered for compatibility. - Updated project files to support new benchmarks and ensure proper configuration. - Modified `Program.cs` to utilize `BenchmarkSwitcher` for running benchmarks.
- Added performance notes for per-stream read queries in Changelog.md - Introduced explain audit script for validating index usage in MongoDB - Implemented tests to ensure expected indexes are used for various queries - Added MongoDB snapshot indexes for improved snapshot retrieval - Refactored MongoPersistenceEngine to optimize query filters and sorting
…in ExtensionMethods
…sage attributes - Introduced a new class `MongoPersistenceEngineLogMessages` to centralize logging messages. - Replaced direct logging calls with structured logging using the new LoggerMessage attributes for better performance and readability. - Updated various methods in `MongoPersistenceEngine`, `MongoPersistenceWireup`, and related classes to utilize the new logging structure. - Removed unnecessary logging checks and streamlined the logging process. - Cleaned up project file by removing obsolete resource configurations related to Messages.resx.
…ry analysis and benchmarking targets
Clarified response style rules in AGENTS.md to disallow openers/closings, emojis, and em-dashes. Updated NEventStore submodule. Upgraded Microsoft.NET.Test.Sdk and MongoDB.Driver versions in test project.
…and benchmarks for MongoDB persistence - Updated Performance-Investigation.md to reflect current state and findings. - Added SnapshotAssistedRebuildBenchmarks to compare full and snapshot-assisted rebuilds. - Refined ReadFromStreamBenchmarks and StreamRevisionWindowBenchmarks for consistency. - Adjusted benchmark job configurations for improved clarity and performance. - Fixed minor issues in benchmark scripts and extension methods for better functionality.
3d32e38 to
a288706
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updated NEventStore to 10.2.0
This pull request introduces major improvements to CI/CD automation, security, and developer experience, with new GitHub Actions workflows, security-focused agent and instructions, and supporting configuration for dependency and Docker management. The changes emphasize secure, reproducible builds, least-privilege authentication, and supply chain hardening.
Added explicit support for:
Some Code refactoring and cleanup.
CI/CD Automation and Security:
.github/workflows/ci.yml) for multi-platform builds and matrix test runs, including secure action pinning, dependency caching, and test artifact upload.pack-and-publishworkflow (.github/workflows/pack-and-publish.yml) for building and optionally publishing NuGet packages, with secure secret handling and manual trigger support.dependabotconfiguration (.github/dependabot.yml) to automate updates for GitHub Actions dependencies, improving supply chain security.Security and Authentication Guidance:
.github/agents/github-actions-expert.agent.md) with best practices for workflow security, action pinning, OIDC, and supply chain hardening..github/instructions/git-gh-auth.instructions.md,.agents/skills/git-gh-pat-auth/SKILL.md). [1] [2]Developer Experience:
.vscode/tasks.json) for easy Docker environment setup and .NET builds.gitversion.toolto version 6.7.0 for improved versioning support. (.config/dotnet-tools.json)These changes collectively modernize the repository’s automation, enforce strong security practices, and streamline local development.